package com.cn.wanxi.servlet;


import com.cn.wanxi.model.CompanyModel;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.model.NewsModel;
import com.cn.wanxi.model.ProductModel;
import com.cn.wanxi.service.CompanyService;
import com.cn.wanxi.service.NavService;
import com.cn.wanxi.service.NewsService;
import com.cn.wanxi.service.ProductService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * //地址，前端访问后台的地址，一定要用绝对路径,
 * 地址不能相同
 * 将数据传递给前端
 */
@WebServlet("/home")
public class HomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//        需要将数据发送到具体某个页面
//        页面转发和重定向的区别？
//        页面转发

//        怎么讲数据发送给前端？
        /**
         * 作用域
         * application：本地仓库
         * 全局作用范围，整个应用程序共享，就是在部署文件中的同一个webApp共享，生命周期为：应用程序启动到停止。
         * session：临时仓库
         * 会话作用域，当用户首次访问时，产生一个新的会话，以后服务器就可以记住这个会话状态。生命周期：会话超时，或者服务器端强制使会话失效。
         * request：请求页面
         * 请求作用域，就是客户端的一次请求。
         * page：只能当前页面
         * 一个JSP页面。
         *
         */
//        req.setAttribute("key", "value");//"key"必须唯一, "value"

//        companyService.setCompanyModel();

//        req.setAttribute("phone", phone);
//        req.setAttribute("logo", logo);
        //公司信息
//        CompanyService companyService = new CompanyService();
//        CompanyModel companyModel = companyService.setCompanyModel();
//        req.setAttribute("companyModel", companyService.setCompanyModel());
//        req.getSession().setAttribute("companyModel", companyModel);
//        导航信息
//        因为我们要调用服务逻辑层，因为服务逻辑层需要封装导航数据
//        NavService navService = new NavService();
//将相同的对象放入一个容器，数组
//        数组的定义方式？
//        1.动态定义dataType[] arrayRefVar = new dataType[arraySize];
//        2.静态定义dataType[] arrayRefVar = {value0, value1, ..., valuek};
//        得到服务逻辑层返回的数据
//        NavModel[] navModels = navService.getNavModels();
//        因为我们需要将数据返回给页面
//        req.setAttribute("navModels", navModels);
        CommonServlet.setCompanyAndNavData(req);

//      新闻信息
        NewsService newsService = new NewsService();
        NewsModel[] newsModels = newsService.getNewsModels();
        req.setAttribute("newsModels", newsModels);
//        产品信息
        ProductService productService = new ProductService();
        ProductModel[] productModels = productService.getProductModes();
        req.setAttribute("productModels", productModels);

        req.getRequestDispatcher("/jsp/home.jsp").forward(req, resp);

//        页面重定向，只是单纯的跳转页面
//        resp.sendRedirect("/jsp/home.jsp");
    }
}
